package LC;

/**
 * https://leetcode.com/problems/symmetric-tree/description/
 * Given a binary tree,
 * check whether it is a mirror of itself (ie, symmetric around its center).
 * For example, this binary tree [1,2,2,3,4,4,3] is symmetric:
 * But the following [1,2,2,null,3,null,3] is not:
 */
public class LC_101_SymmetricTree_BinaryTree_Recur {
    public static void main(String[] args) {
        TreeNode root = new TreeNode(1);
        boolean f = Solution.isSymmetric(root);
        System.out.println(f);
    }

    static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode(int x) {
            val = x;
        }
    }

    static class Solution {
        static boolean isSymmetric(TreeNode root) {
            return root == null || isSame(root.left, root.right);
        }

        static boolean isSame(TreeNode left, TreeNode right) {
            if (left == null && right == null)
                return true;
            if ((left != null && right == null) || (left == null && right != null)) {
                return false;
            } else {
                return left.val == right.val && isSame(left.left, right.right) && isSame(left.right, right.left);
            }
        }
    }
}
